"""
flask的路由设置与参数接收

1.flask发送get、post请求  对参数的接收
flask的请求与响应：
    @app.route("/login", methods=['GET', 'POST'])  # Method Not Allowed:默认情况下方法只能接收get()请求, 需要添加GET/POST列表
    def login_post():
        username = request.form['uname']
        password = request.form['password']
        return "（POST测试）正在登录! 你的用户名："+username+"和密码是："+password
响应：
    1 字符串（return "  "）
    2 模板 return render_template("index.html")
    3 重定向 return url_for('login')
    4 错误  about(401)

2.request对象是用来接收参数，也可以通过尖括号<name>与函数返回的参数一致来接收
get--request.args['uname']
post--request.form['uname']

<input type="text" name="uname">在表单中是通过name来确定key值的
 """

from flask import Flask, render_template  # 跳转表单页面需要引入render_template
from flask import request  # request是接收参数，也可以通过尖括号<name>与函数返回的参数一致来接收
from flask import redirect  # 网页重定向
from flask import url_for
from flask import abort  # 状态码

app = Flask(__name__)


@app.route("/index")
def index():
    # 返回了一个页面, 往页面传参数msg：<h1>{{msg}}</h1>
    return render_template("index.html", msg="登录用户名或密码错误！")


@app.route("/login", methods=['GET', 'POST'])  # Method Not Allowed:默认情况下方法只能接收get()请求, 需要添加GET/POST列表
def login_post():
    username = request.form['uname']
    password = request.form['password']
    return "（POST测试）正在登录! 你的用户名：" + username + "和密码是：" + password


@app.route("/get")  # Method Not Allowed:默认情况下方法只能接收get()请求, 需要添加GET/POST列表
def login_get():  # get测试：http://127.0.0.1:5000/get?uname=xiaohe
    print(request)
    username = request.args['uname']
    return "正在测试GET方法！传递的用户名是：" + username


@app.route("/str")  # http://127.0.0.1:5000/str
def return_str():
    return "返回了Str(字符串)"


@app.route("/url")  # http://127.0.0.1:5000/url
def return_url():
    # return "返回了url重定向"
    # 重定向到，跳到哪个方法, index页面
    return redirect(url_for('index'))


@app.route("/code")  # http://127.0.0.1:5000/code
def return_error():
    # return "返回了一个错误"
    # 返回一个状态码
    abort(200)  # LookupError: no exception for 200


if __name__ == '__main__':
    app.run(debug=1)
